Gps sensor control

ABSTRACT

A device comprises a global positioning system (GPS) sensor and a circuit. The GPS sensor is switchable between a high power state and a lower power state. The circuit is configured to dynamically adjust a power state duty cycle of the GPS sensor based on at least a golf-event interrupt. The power state duty cycle defines a percentage of a period in which the GPS sensor operates in a high power state relative to a lower power state.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Patent Application No.62/172,717, filed on Jun. 8, 2015, and U.S. Patent Application No.62/172,718, filed on Jun. 8, 2015, the entirety of each of which arehereby incorporated herein by reference.

BACKGROUND

A mobile computing device may be configured to provide distanceinformation to a golfer during a round of golf. For example, the mobilecomputing device may provide distance information using position dataprovided by a global positioning system (GPS) sensor. In one example,the mobile computing device may continuously operate the GPS sensorduring a round of golf to provide distance information to a golfer.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter. Furthermore,the claimed subject matter is not limited to implementations that solveany or all disadvantages noted in any part of this disclosure.

A device comprises a global positioning system (GPS) sensor and acircuit. The GPS sensor is switchable between a high power state and alower power state. The circuit is configured to dynamically adjust apower state duty cycle of the GPS sensor based on at least a golf-eventinterrupt. The power state duty cycle defines a percentage of a periodin which the GPS sensor operates in the high power state relative to thelower power state.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an example golf computing environment including a wearablecomputing device, a mobile computing device, and a service computingdevice.

FIG. 2 shows the wearable computing device of FIG. 1 visually presentinga golfer's golf score.

FIG. 3 shows an example scenario where a golfer's golf score is manuallyincreased via touch input to a display of the wearable computing deviceof FIG. 1.

FIG. 4 shows an example scenario where a golfer's golf score is manuallydecreased via touch input to a display of the wearable computing deviceof FIG. 1.

FIG. 5 shows the wearable computing device and the mobile computingdevice of FIG. 1 visually presenting golfer-related informationcollected by the wearable computing device during a round of golf.

FIG. 6 schematically shows a computer architecture diagram of an examplewearable computing device.

FIG. 7 schematically shows an example machine-learning golf shotdetection machine implemented in a wearable computing device.

FIG. 8 shows an example method executed by a wearable computing devicefor automatically keeping track of a golfer's golf score.

FIG. 9 shows an example method executed by a wearable computing devicefor controlling operation of a global positioning system (GPS) sensor ofa wearable computing device.

FIG. 10 shows an example computing system.

DETAILED DESCRIPTION

A mobile computing device may operate a global position system (GPS)sensor continuously during a round of golf to provide locationinformation to a golfer. However, continuous operation of the GPS sensormay consume a significant amount of power. For example, in a mobilecomputing device, continuous operation of a GPS sensor may completelydrain a battery of the mobile computing device in less time than ittakes to complete a round of golf

Accordingly, the present disclosure is related to an approach forcontrolling operation of a GPS sensor of a golf assistant computingdevice in an energy efficient manner that is adapted to the specificconditions of playing a round of golf. More particularly, the presentdisclosure is related to operating a GPS sensor of a golf assistantcomputing device according to a power state duty cycle that defines apercentage of a period in which the GPS sensor operates in a high powerstate relative to a lower power state, and dynamically adjusting thepower state duty cycle of the GPS sensor responsive to a golf-eventinterrupt.

By controlling the GPS sensor according to a power state duty cycleconfigured specifically for golfing, the GPS sensor may be turned onfrequently enough to maintain a warm lock that may enable the GPS sensorto acquire a signal quickly enough to provide position data for trackinggolf events (e.g., golf shot locations, distance requests, holedetection) in an accurate manner. Correspondingly, the GPS sensor may beturned off when the GPS sensor is not needed to provide position datafor golf event tracking purposes. Accordingly, power consumption of aGPS sensor may be reduced during a round of golf relative to an approachwhere the GPS sensor is turned on continuously for the round of golf.Furthermore, by dynamically adjusting the power state duty cycleresponsive to a golf-event interrupt, the GPS sensor may be operated inthe higher power state (e.g., turned on) for a sufficient duration toprovide position data related to a golf event regardless of whether thatduration does not comply with a default power state duty cycle.

FIG. 1 shows an example wearable computing device 100. Wearablecomputing device 100 is a wrist-worn computing device that includes awrist band 102 and a display 104. Wrist band 102 is configured to bewrapped around a wrist of a user to secure the wearable computing device100 to the user's wrist. Display 104 is configured to visually presentinformation related to a variety of different application programsexecutable by wearable computing device 100. Display 104 may employ anysuitable type of display technology. In some implementations, display104 includes a touch-screen sensor configured to receive touch inputfrom the user. As examples, the touch sensor may be resistive,capacitive, or optically based. In some implementations, wearablecomputing device 100 includes push buttons 106, which may includerockers. User input from push buttons 106 may be used to initiatevarious operations, such as displaying a home-screen, enacting an on-offfeature, controlling audio volume, visually presenting and/or executingdifferent application programs, performing application-specificoperations, visually presenting application-specific information, andother computing operations.

Wearable computing device 100 may be configured to execute differentapplication programs 108 (e.g., represented by tiles 108A, 108B. 108C)related to different activities. In the illustrated implementation,application program 108A is an exercise application program to trackexercise routines, application program 108B is a golf applicationprogram to automatically track a golf score and provide othergolf-related information to a golfer, and application program 108Crepresents an email application. In one example, a user may swipe leftor right along display 104 to scroll through different tilesrepresenting different application programs executable by wearablecomputing device 100. Further, the user may tap a particular tile toexecute a corresponding application program.

Wearable computing device 100 may be configured to execute any suitablenumber of different application programs related to differentactivities. In some implementations, various application programs may bepre-loaded onto wearable computing device 100 by a manufacturer ofwearable computing device 100. In some implementations, variousapplication programs can be downloaded to wearable computing device 100via communication with a remote computing device. Wearable computingdevice 100 may communicate with a service computing system (e.g., avirtual marketplace) 110 via a network 112, such as the Internet. Inparticular wearable computing device 100 may download an applicationprogram from service computing device 110. For example, a user maybrowse through a plurality of different application programs availablefor download on a virtual marketplace, and select a desired applicationprogram to be downloaded to wearable computing device 100.

Furthermore, wearable computing device 100 may communicate with a mobilecomputing device (e.g., a smartphone) 114. In one example, wearablecomputing device 100 communicates with mobile computing device 114 via adirect connection 116 (e.g., Bluetooth). In such an example, wearablecomputing device 100 may lack wide-area network connectivitycapabilities. In another example, wearable computing device 100 doeshave wide-area network connectivity and communicates with mobilecomputing device 114 via network 112 (e.g., the Internet).

In some implementations, wearable computing device 100 may download anapplication program from mobile computing device 114. In someimplementations, mobile computing device 114 may act as an intermediarydevice between service computing device 110 and wearable computingdevice 100. In some implementations, mobile computing device 114 mayprovide supplemental resources (e.g., processing, visual presentation,connectivity) to wearable computing device 100 to enhance execution ofvarious application programs by wearable computing device 100. Forexample, wearable computing device 100 may have limited display,processing, connectivity, and/or power (e.g., battery) capabilitiesrelative to mobile computing device 114. Accordingly, in some cases,mobile computing device 114 may perform various application-specificoperations on behalf of wearable computing device 100.

In the illustrated example, mobile computing device 114 is configured toexecute a companion golf application program 118 that cooperates withthe golf application program 108B executed by wearable computing device100. In particular, companion golf application program 118 may presentsupplemental golf information related to a golfer and/or a golf course.Such supplemental golf-related information may be referenced by thegolfer before and/or after a round of golf. For example, companion golfapplication program 118 may visually present detailed golf coursefeature maps that may not be able to be visually presented withsufficient detail by display 104 of wearable computing device 100. Inanother example, companion golf application program 118 may trackstatistics for a golfer on a long-term basis (e.g., across multiplerounds of golf) that would consume substantial storage resources ofwearable computing device 100. In some implementations, companion golfapplication program 118 alternatively or additionally may be executed byservice computing device 110. For example, companion golf applicationprogram 118 may be a web application accessible via a web browser.

In some implementations, wearable computing device 100 may haveprocessing, display, and other computing resources sufficient to presentgolf-related information without companion golf application program 118.In other words, the functionality provided by companion golf applicationprogram 118 may instead be provided by golf application program 108B.

In one example in which wearable computing device 100 is used as a golfassistant computing device to track golf-related information during around of golf, the golfer may select the tile corresponding to golfapplication program 108B to initiate execution of golf applicationprogram 108B. Next, the golfer may select, via mobile computing device114, a desired golf course where the round of golf will be played or thegolf application program 108B infers the golf course based on currentlocation and/or information saved in a calendar application. Golf coursedata for the desired golf course is acquired by wearable computingdevice 100 responsive to the selection of the golf course. For example,golf course data may include hole lengths for different tee locations,pars, slope ratings, GPS locations of different golf course features(e.g., front/middle/back of greens, bunkers, water hazards, and teeboxes) and/or other golf course information. Once the golf course datahas been downloaded to wearable computing device 100, the golfer mayproceed with playing the round of golf.

In some implementations, wearable computing device 100 may havecommunication, processing, storage, and other computing resourcessufficient to receive, store, and present golf course data withouthaving to download the golf course data from mobile computing device114. In some implementations, wearable computing device 100 may receivegolf course data directly from service computing device 110. In someimplementations, wearable computing device 100 may store golf coursedata for some or all available golf courses.

Wearable computing device 100 may be configured to automatically track agolf score of the golfer based on the golfer's swing motion. Forexample, swing motion may be determined by motion sensors of wearablecomputing device 100 that may be configured to determine position and/ororientation data of wearable computing device 100. In the illustratedimplementation, swing motion of wearable computing device 100 isdetermined along six-axes or six-degrees of freedom (6DOF). Inparticular, a position about three orthogonal spatial axes (e.g., X, Y,and Z) and an orientation about three orthogonal rotation axes (e.g.,yaw, pitch, and roll) of wearable computing device 100 may be determinedby motion sensors of wearable computing device 100. Wearable computingdevice 100 may identify, from the swing motion, a golf shot in which agolf club held by the golfer contacts a golf ball. Further wearablecomputing device 100 may be configured to increment a golf score of thegolfer responsive to the golf shot being identified. Such automatic golfscore keeping will be described in further detail below with referenceto FIGS. 6-8.

Wearable computing device 100 may visually present the golf score of thegolfer as well as other golf-related information via display 104. Forexample, golf-related information may include a current hole, a currentgolf score, relevant distances, relevant elevations, and other suitablegolf-related information. In some implementations, wearable computingdevice 100 may be configured to automatically visually presentgolf-related information via display 104 without user input from thegolfer. In some implementations, wearable computing device 100 may beconfigured to visually present golf-related information via display 104responsive to user input to wearable computing device 100. In oneexample, the golfer may press one of push buttons 106 to visuallypresent a distance to a current green. In another example, the golfermay press the other one of push buttons 106 to visually present acurrent total golf score for the round and a current total scoreover/under par. Wearable computing device 100 may be configured tovisually present any suitable golf-related information in any suitablemanner.

FIG. 2 shows an example scenario in which display 104 of wearablecomputing device 100 visually presents golf-related information during around of golf. In particular, display 104 visually presents a currenthole 200, a par 202 for the current hole, a current golf score 204, acurrent time 206, a current distance to a front of the current green208, a current distance to a middle of the current green 210, and acurrent distance to a back of the current green 212. In the illustratedexample, the current hole is the 2^(nd) hole, the current par is 4, thecurrent golf score is 4, the current time is 12:39 PM, the currentdistances to the front/middle/back of the green are 319/326/331 yards.

In some implementations, the golf-related information may be visuallypresented and updated without user input. Wearable computing device 100may be configured to automatically update the current hole 200 and thepar 202 for the current hole responsive to a new hole being detectedbased on a location of the golfer, among other relevant information.Similarly, wearable computing device 100 may automatically update thedistances to the different parts of the current green.

In some implementations, at least some of the golf-related informationmay be visually presented/updated responsive to user input. For example,wearable computing device 100 may be configured to visually present thehole distances 208, 210, 212 via display 104 responsive to receivinguser input via push button 106. In one example, wearable computingdevice 100 may visually present the hole distances for a designatedduration. In another example, wearable computing device 100 may visuallypresent the hole distances until the hole distances change or are nolonger accurate (e.g., due to a change in position of the golfer).

Furthermore, wearable computing device 100 may automatically update thecurrent golf score 204 responsive to detection of a golf shot.Additionally, wearable computing device 100 may update the current golfscore 204 responsive to a manual change via user input. FIGS. 3-4 showdifferent example scenarios of wearable computing device 100 manuallyadjusting the current golf score 204 responsive to user input. In theseexample scenarios, the current golf score is 4 as shown in FIG. 2.

In one example shown in FIG. 3, the golfer swipes a finger 300 leftwardacross display 104. Wearable computing device 100 recognizes the touchinput as an increment golf score gesture, and updates the current golfscore from 4 to 5 responsive to recognizing the increment golf scoregesture. Further, wearable computing device 100 visually presents anincrement golf score indicator 302 via display 104 responsive torecognizing the increment golf score gesture. The increment golf scoreindicator 302 may provide visual feedback to the golfer indicating thatthe golfer is manually increasing the golf score 204.

In another example shown in FIG. 4, the golfer swipes the finger 300rightward across display 104. Wearable computing device 100 recognizesthe touch input as a decrement golf score gesture, and updates thecurrent golf score from 4 to 3 responsive to recognizing the decrementgolf score gesture. Further, wearable computing device 100 visuallypresents a decrement golf score indicator 400 via display 104 responsiveto recognizing the decrement golf score gesture. The decrement golfscore indicator 400 may provide visual feedback to the golfer indicatingthat the golfer is manually decreasing the golf score 204.

The golfer may desire to manually adjust the golf score 204 for variousreasons separate from automatically detecting golf shots and inaccordance with the rules of golf. In one example, a golfer manuallyincrements the golf score 204 to account for penalty strokes, such asdue to hitting a ball out-of-bounds or into a water hazard. In anotherexample, a golfer manually decrements the golf score 204 to account fortaking a mulligan. The golf score 204 may be manually adjusted for anysuitable reason.

Wearable computing device 100 may visually present and update anysuitable golf-related information as the round of golf is played by thegolfer.

Furthermore, in response to completion of the round of golf (or uponexit of golf application program 108B), wearable computing device 100visually presents a summary of golf-related information for the roundvia display 104. Completion of the round of golf may be determined inany suitable manner. In one example, the golfer provides user input towearable computing device 100 manually indicating the round of golf iscompleted. In another example, the golfer specifies a desired number ofholes in the round (e.g., 9, 18, 36), and upon completion of the desirednumber of holes, wearable computing device 100 may automaticallydetermine that the round of golf is completed. In another example,wearable computing device 100 may determine the round is completedresponsive to the current location of the golfer being greater than athreshold distance from a final green after the golfer had been locatedon the final green. For example, if the golfer walks to the clubhouseafter the 18th hole, then wearable computing device 100 may determinethat the golfer has moved a sufficient distance away from the green, anddetermines that the round of golf is completed.

FIG. 5 shows an example scenario in which display 104 of wearablecomputing device 100 visually presents an example summary ofgolf-related information at the conclusion of a round of golf. Inparticular, display 104 visually presents the current time 206, a totalgolf score 500 for the round of golf, a total score over par 502 for theround of golf, a number of calories 504 burned during the round of golf,and a number of steps 506 taken during the round of golf. In theillustrated example, the total golf score is 85, the total score overpart is +13, the number of calories burned is 617, and the total numberof steps is 11,257.

Furthermore, upon conclusion of the round of golf, wearable computingdevice 100 may send golf-related information tracked by wearablecomputing device 100 during the round of golf to mobile computing device114. For example, golf-related information may include a position anddistance of each golf shot, a number of drives/chips/putts for eachhole, a total number of drives/chips/putts for the round of golf, a golfscore for each hole, a total golf score, a number of steps for eachhole, a total number of steps for the round of golf, a total distancetraveled for the round of golf, a number of calories burned for eachhole, and a total number of calories burned for the round of golf.Wearable computing device 100 may send any suitable golf-relatedinformation to mobile computing device 114. In some implementations,wearable computing device 100 additionally or alternatively may sendgolf-related information to service computing device 110.

Mobile computing device 114 may visually present the golf-relatedinformation received from wearable computing device 100 via companiongolf application program 118. In the illustrated example, mobilecomputing device 114 visually presents the total golf score 508, ascorecard 510 including hole-by-hole scoring, and a shot map 512including a position and distance of each golf shot taken by the golferfor a selected hole of the golf course. Mobile computing device 114 mayvisually present any suitable golf-related information. In someimplementations, mobile computing device 114 may visually presentgolf-related information for a golfer accumulated over multiple roundsof golf. For example, mobile computing device 114 may track and visuallypresent a handicap of the golfer, an average drive distance, an averagenumber of putts per hole, and other cumulative golf statistics.

Although wearable computing device 100 may communicate with mobilecomputing device 114 before and/or after a round of golf, wearablecomputing device 100 is configured to automatically keep track of thegolfer's golf score during the round of golf without communicating withthe mobile computing device 114 and service computing device 110.Accordingly, wearable computing device 100 may not reduce a batterystate of charge due to score-keeping communication with mobile computingdevice 114 during the round of golf and vice versa.

In some implementations, wearable computing device 100 may haveprocessing, storage, display, and other computing resources sufficientto present golf-related information without support from mobilecomputing device 114. In other words, the functionality provided bymobile computing device 114 may instead be provided by wearablecomputing device 100.

FIG. 6 shows an example computer architecture diagram of computingcomponents of wearable computing device 100 that collectively enable thefunctionality of golf application program 108B described above. Inparticular, wearable computing device 100 includes a plurality ofsensors 600 configured to translate different physical parameters intomachine-readable sensor data 610 that is provided as input to aplurality of different operation-specific machines configured tocollectively track, generate, and visually present the above describedgolf-related information as well as provide other golf-relatedfunctionality described herein. As used herein, “machine” means physicaldata-storage and processing circuit(s) and/or other hardware programedwith instructions to perform specialized computing operations. It is tobe understood that two or more different circuits and/or other machinesmay share hardware components. For example, the same integrated circuitmay be part of two or more different machines programmed to performdifferent functions. As used herein, “first,” “second,” and otheridentifiers may be used to refer to the same circuit and/or othermachine.

In the illustrated implementation, the plurality of sensors 600 includean inertial measurement unit (IMU) 602, a global position system (GPS)sensor 604, one or more audio sensors 606, and one or more barometers608. IMU 602 may be configured to provide position and/or orientationdata of wearable computing device 100. In one example implementation,IMU 602 may be configured as a six-axis or six-degree of freedom (6DOF)position sensor system. Such a configuration may include threeaccelerometers and three gyroscopes to indicate or measure a change inposition of wearable computing device 100 about three orthogonal spatialaxes (e.g., x, y, and z) and a change in orientation about threeorthogonal rotation axes (e.g., yaw, pitch, and roll). IMU 602 may beconfigured to translate swing motion of the golfer to machine-readablemotion data 612.

GPS sensor 604 may be configured to determine a geographical location ofwearable computing device 100 via communication with a GPS satellitenetwork. Further, GPS sensor 604 may be configured to translate thegeographical location into machine-readable position data 614. GPSsensor 604 may be configured to switch between a high power state and alower power state according to a power state duty cycle that defines apercentage of a period in which GPS sensor 604 operates in the highpower state relative to the lower power state.

One or more audio sensors 606 may be configured to capture sounds of thephysical environment surrounding wearable computing device 100. Forexample, the one or more audio sensors 606 may capture sound of a swingmotion of the golfer and/or sound of contact between the golf club andthe golf ball. As another example, audio sensors 606 may capture thesound of a golf club hitting the ground and not the ball. Further, theone or more audio sensors 606 may be configured to translate the soundof the swing motion of the golfer the contact between the golf club andthe golf ball, and/or the contact between the golf club and the groundto machine-readable audio data 616.

Barometer 608 may be configured to measure atmospheric pressure at thelocation of wearable computing device 100. Further, barometer 608 may beconfigured to translate the atmospheric pressure to machine-readableelevation data 618. In implementations that include two barometers, thetwo barometers may act as a speed sensor that translate swing motion toa speed data that wearable computing device 100 may use to track agolfer's swing speed during different golf swings.

While specific examples of sensors have been described, wearablecomputing device 100 may include any other suitable sensors for trackinggolf-related information of a golfer. For example, wearable computingdevice 100 may include visible-light sensors, ultraviolet sensors,ambient temperature sensors, contact sensors, optical heart ratesensors, and other sensors for measuring a physical condition of thegolfer. Such sensors may measure any suitable physical parameter.Further, such sensors may be in communication with one or more circuitsor other machines configured to translate measurements of the physicalparameters into machine-readable sensor data 610.

The plurality of machines may use the machine-readable sensor data 610to perform operations that enable functionality of the golf applicationprogram 108B. In the illustrated implementation, the plurality ofmachines include a machine-learning golf shot detection machine 620, acrossing detection machine 626, an orientation determination machine628, a score-keeping machine 630, a distance calculation machine 632, astep counting machine 634, a hole progression machine 636, and a GPSpower management machine 638.

Machine-learning golf shot detection machine 620 may be configured toidentify from machine-readable motion data 612 a golf swing. Further,machine-learning golf shot detection machine 620 may be configured toidentify from machine-readable motion data 612 a golf shot in which agolf club held by the golfer contacts a golf ball. More particularly,machine-learning golf shot detection machine 620 may include a pluralityof different swing detection and contact detection classifiers 622. Eachswing detection classifier may be configured to identify a differenttype of golf swing. Each contact detection classifier may be configuredto identify a golf shot (i.e., contact of a club with a golf ball) fordifferent swing magnitudes. Each classifier 622 may be a neural networkincluding a different set of features 624. Each set of features 624 mayinclude individual, measurable properties derived from themachine-readable motion data 612 that define a particular type of golfswing or golf shot. Each set of features 624 may be created from adifferent combination of transformations on motion data samples windowedaround crossings of angular acceleration of one or more gyroscopes ofIMU 602. Such crossings may occur from positive to negative or negativeto positive angular acceleration. In other words, each set of features624 may be created using data samples within a different fixed windowthat is set relative to a time at which one or more crossings occur.Classifiers 622 of machine-learning golf shot detection machine 620 willbe discussed in further detail below with reference to FIG. 7.

Machine-learning golf shot detection machine 620 may be previouslytrained with training motion data of previously-executed golf swings.More particularly, each classifier 622 may be previously trained withtraining motion data of previously-executed golf swings of a particulartype that corresponds to the particular classifier. For example, a driveswing detection classifier may be previously trained with trainingmotion data of previously-executed drive swings (e.g., typically using adriver club).

In some implementations, machine-learning golf shot detection machine620 may be configured to identify a golf swing and/or a golf shot frommachine-readable audio data 616 provided from audio sensor 606. Suchswing/shot detection may be made based on audio data 616 alone or incombination with motion data 612. In such implementations,machine-learning golf shot detection machine 620 may be previouslytrained with training audio data of previously-executed golf swings/golfshots.

In some implementations, machine-learning golf shot detection machine620 may be configured to disallow or ignore various swing or shotdetections based on a location of wearable computing device 100determined via GPS sensor 604. For example, when a distance from thelocation of wearable computing device 100 to a portion of a green of acurrent hole is greater than a threshold distance, machine-learning golfshot detection machine 620 may ignore all detections of putt swings andputt shots. According to such an approach, machine-learning golf shotdetection machine 620 may filter out false positive detections of swingsand shots. Moreover, such an approach may be extended to other types ofswings and shots having different distance thresholds and/or other falsepositive identification parameters.

Crossing detection machine 626 may be configured to identify one or morecrossings between negative and positive angular acceleration of one ormore gyroscopes of IMU 602. A crossing of at least one gyroscope occurson almost all golf swings, and thus provides a reliable indication thata golf swing is potentially taking place. As such, machine-learning golfshot detection machine 620 may be configured to execute one or moreswing detection classifiers 624 in response to crossing detectionmachine 626 identifying at least one gyroscope crossing. In other words,crossing detection machine 626 may trigger machine-learning golf shotdetection machine 620 to run one or more classifiers for identifying agolf swing. In one example, in response to crossing detection machine626 identifying two crossings of two different gyroscopes,machine-learning golf shot detection machine 620 may execute a driveswing detection classifier and a chip swing detection classifier.Further, in response to crossing detection machine 626 identifying acrossing of at least one gyroscope, machine-learning golf shot detectionmachine 620 may execute a putt swing detection classifier. By triggeringexecution of the different classifiers based on crossings identified bycrossing detection machine 626, the classifiers may be executed lessfrequently relative to an approach where classifiers are continuouslyexecuted on motion data. According to such an approach, processingresources of wearable computing device 100 may be operated in a moreefficient manner that conserves battery power of wearable computingdevice 100.

Orientation detection machine 628 may be configured to determine anorientation of wearable computing device 100. The orientation ofwearable computing device 100 may be used by machine-learning golf shotdetection machine 620 as a reference when interpreting machine-readablemotion data 612 generated from swing motion. In implementations wherewearable computing device 100 is a wrist-worn device, wearable computingdevice 100 may be worn in one of four different orientations. The fourorientations include left wrist with the display facing outward, leftwrist with the display facing inward, right wrist with the displayfacing outward, and right wrist with the display facing inward.

In some implementations, orientation detection machine 628 may beconfigured to automatically determine an orientation of wearablecomputing device 100. In one example, orientation detection machine 628applies four different mathematical transformations to machine-readablemotion data 612 generated from a swing motion. The four differentmathematical transformations correspond to the four supportedorientations of wearable computing device 100. In one example,machine-readable motion data 612 may be mathematically transformed tomatch what would be seen if the band is worn on the left-inside with thedisplay facing inwards (the most common orientation in which wearablecomputing device 100 is worn). Orientation detection machine 628commands machine-learning golf shot detection machine 620 to executedrive swing detection classifier four times using the fourtransformations of machine-readable motion data 612. Orientationdetection machine 628 selects an orientation corresponding to whichevermathematical transformation of machine-readable motion data 612 producesthe highest confidence of a swing detection from the drive swingdetection classifier.

In some implementations, the orientation detection machine 628 detectsan orientation of wearable computing device 100 by prompting the golferto provide a manual indication of orientation via user input. Forexample, orientation detection machine 628 may prompt the golfer toselect one of the four supported orientations upon startup of golfapplication program 108B.

Once the orientation of wearable computing device 100 is determined,orientation detection machine 628 may apply the mathematicaltransformation corresponding to the selected orientation tomachine-readable motion data 612 generated from every swing. Bymathematically transforming machine-readable motion data 612 accordingto the detected orientation, a single type of swing classifier can beused to identify a swing regardless of device orientation. By reducingthe number of classifiers that are executed to identify a golf swing,machine training may be simplified. Alternatively, the orientation ofwearable computing device 100 may not be considered, and insteadmachine-learning golf shot detection machine 620 may include fourorientation-specific classifiers for each type of swing.

Score-keeping machine 630 may be configured to increment the golf scoreof the golfer during a round of golf responsive to machine-learning golfshot detection machine 620 identifying a golf shot. Further,score-keeping machine 630 may be configured to adjust the golf score ofthe golfer for a round of golf, responsive to wearable computing device100 receiving user input indicating a manual change of the golf score,such as a decrement golf score gesture or an increment golf scoregesture.

In some implementations, score-keeping machine 630 may be configured torecognize a golf shot grouping session. A golf shot grouping session maybe a designated window of time in which only one golf shot is countedtoward a golf score regardless of how many golf swings or golf shots aredetected by machine-learning golf shot detection machine 620. In oneexample, score-keeping machine 630 may recognize a golf shot groupingsession responsive to detecting an initial golf swing or golf shot in awindow. In another example, score-keeping machine 630 may be configuredto initiate a golf shot grouping session responsive to identifying agolf swing having a swing speed greater than a threshold speed. Forexample, when a golfer is a threshold distance (e.g., far enough to usea full swing) away from a green, swings having slower speeds may beclassified as practice swings and may be grouped within a shot groupingsession. A swing speed parameter may be utilized to determine a shotgrouping session in any suitable manner. In some implementations,score-keeping machine 630 may be configured to extend a duration of thegolf shot grouping session each time machine-learning golf shotdetection machine 620 identifies an additional golf swing.

Furthermore, score-keeping machine 630 may be configured to end the golfshot grouping session responsive to various conditions. In one example,score-keeping machine 630 may be configured to end the golf shotgrouping session responsive to a duration of the golf shot groupingsession being greater than a duration threshold. For example, if no golfswings are identified for three minutes after a previously identifiedgolf swing, then score-keeping machine 630 may end the golf shotgrouping session. In another example, score-keeping machine 630 may beconfigured to end the golf shot grouping session responsive to adistance between a location of the golf shot and a current location ofthe golfer being greater than a distance threshold. For example, if thegolfer travels more than ten yards from a position of the previouslyidentified golf shot, then score-keeping machine 630 may end the golfshot grouping session. In another example, score-keeping machine 630 maybe configured to end the golf shot grouping session responsive to a newhole detection event. For example, a new hole detection event may occurwhen a position of the golfer is determined to be within a boundary of anext tee box after leaving a previous green. In another example,score-keeping machine 630 may be configured to end the golf shotgrouping session responsive to a manual adjustment of the golf score.Score-keeping machine 630 may be configured to end the golf shotgrouping session responsive to any suitable condition.

Score-keeping machine 630 may be configured to increment the golf scoreonly once per each golf shot grouping session. By employing the golfshoot grouping session, a likelihood of score-keeping machine 630inaccurately incrementing the golf score may be reduced.

Distance calculation machine 632 may be configured to determinedistances of golf shots performed by the golfer during the round ofgolf. Distance calculation machine 632 may be configured to determine agolf shot distance by comparing a GPS position of a previously-executedgolf shot to a current GPS position of the golfer when a current golfshot is identified by machine-learning golf shot detection machine 620.

Furthermore, distance calculation machine 632 may be configured todetermine distances between a current position of the golfer andpositions of designated golf course features (e.g., bunker, waterhazard, pin, front/middle/back of green). Distance calculation machine632 may be configured to determine such distances by comparing a currentGPS position of the golfer indicated by machine-readable position data614 to a GPS position of a designated golf course feature. The GPSpositions of different golf course features may be provided to wearablecomputing device 100 from mobile computing device 114 (shown in FIG. 1)as part of a golf course feature map.

In some implementations, distance calculation machine 632 may beconfigured to determine changes in elevation between a current elevationof the golfer and elevations of designated golf course features.Distance calculation machine 632 may be configured to determine suchchanges in elevation by comparing a current elevation of the golferindicated by machine-readable elevation data 618 to an elevation of adesignated golf course feature. The elevation of different golf coursefeatures may be provided to wearable computing device 100 as part of agolf course map. Further, in some implementations, distance calculationmachine 632 may use machine-readable position data 614 andmachine-readable elevation data 618 in distance calculations.

Step counting machine 634 may be configured to recognize a step taken bythe golfer from machine-readable motion data 612. Moreover, stepcounting machine 634 may be configured to track a number of steps takenby the golfer over various segments of the golf course. For example,stem counting machine 634 may track a number of steps taken by thegolfer on each hole of the golf course during the round of golf, as wellas a total number of steps taken by the golfer during the entire roundof golf. In some implementations, step counting machine 634 may track anumber step taken by the golfer since a previous golf shot, andscore-keeping machine 630 may user the number of steps to determinewhether or not to end a golf shot grouping session.

Hole progression machine 636 may be configured to automatically track ahole progression of the golfer based on a current GPS position of thegolfer relative to GPS positions of different holes of the golf course.The GPS positions of different holes may be provided to wearablecomputing device 100 as part of a golf course feature map.

In some implementations, hole progression machine 636 may leverageadditional information beyond the current GPS position of the golfer toincrease a confidence level of a hole progression determination. In oneexample, hole progression machine 636 compares a current number of totalgolf shots taken by the golfer with a cumulative shot threshold for thecurrent hole when determining a current hole of the golfer. For example,if a golfer shanks a tee shot on the 1^(st) hole and the golf ball landson an adjacent fairway of the 8^(th) hole, hole progression machine 636may determine that the golfer has not made a minimum number of golfshots necessary to reach the 8^(th) hole. Accordingly, hole progressionmachine 636 may determine that the golfer is still on the first hole.Alternatively, the hole progression machine may only allow golf shots insuccessive holes. Using the example above, because the last recordedshot was from the 1^(st) hole, the hold progression machine would onlyattribute the shot after a 1^(st) hole shot to the 1^(st) or 2^(nd)holes. In another example, hole progression machine 636 may beconfigured to track a GPS path of the golfer as part of a holeprogression determination. Hole progression machine 636 may track thegolfer's hole progression in any suitable manner.

GPS power management machine 638 may be configured to operate GPS sensor604 between a high power state and a lower power state in an efficientmanner so as to reduce power consumption relative to operating GPSsensor 604 in the high power state continuously. In particular, GPSpower management machine 638 may be configured to, in response toexecution of golf application program 108B, operate GPS sensor 604 inthe high power state until GPS sensor 604 acquires a GPS signal (e.g., ahot lock). Subsequent to acquiring the GPS signal, GPS power managementmachine 638 may control operation of GPS sensor 604 according to adefault power state duty cycle.

The default power state duty cycle may be configured to specificallycontrol operation of GPS sensor 604 according to the GPS position needsof the golf application program 108B. In other words, machine-readableposition data 614 may not be needed continuously to enable functionalityof golf application program 108B. Accordingly, GPS power managementmachine 638 may be configured to operate GPS sensor 604 in the highpower state at a suitable frequency for GPS sensor 604 to maintain awarm lock (e.g., preserve almanac and ephemeris data used to communicatewith satellites of a GPS satellite network in local GPS memory).Accordingly, GPS sensor 604 can provide machine-readable position data614 in a timely manner. In one example, the default power state dutycycle is 33% over a period of 24 seconds. However, the default powerstate duty cycle may be set to any suitable percentage over any suitableperiod.

Furthermore, GPS power management machine 638 may be configured todynamically adjust the power state duty cycle of the GPS sensorresponsive to a golf-event interrupt. Wearable computing device 100 maygenerate a golf-event interrupt responsive to any suitable event inwhich golf application program 108B uses machine-readable position data614 provided by GPS sensor 604 to enable functionality of golfapplication program 108B.

In one example, the golf-event interrupt is generated responsive to amanual user input to the golf assistant computing device. For example,the manual user input may include a golfer-initiated request for adistance between a current position of the golfer and a designated golfcourse feature (e.g., front/middle/back of green).

In another example, the golf-event interrupt is generated responsive toa device-initiated request. Non-limiting examples of device-initiatedrequests include a request for distance between a current position of agolfer and a designated golf course feature, a request for a distancebetween a position at which a previous golf shot was detected and acurrent position of the golfer, a request for a position request todetermine hole progression, and other position requests.

In another example, the golf-event interrupt is generated responsive tomachine-learning golf shot detection machine 620 identifying a golfswing. In this example, GPS power management machine 638 may operate GPSsensor 604 in the high power state prior to machine-learning golf shotdetection machine 620 identifying a golf shot. Accordingly, GPS sensor604 may acquire a GPS signal by the time a golf shot is identified, anda GPS position of the golf shot may be accurately tracked. In otherwords, by turning on the GPS responsive to detection of a golf swing,the GPS sensor may be spooled up with accurate position data when a golfshot is detected.

In another example, the golf-event interrupt is generated responsive toa number of steps taken by the golfer after a last golf shot beinggreater than a step threshold. In this example, such a number of stepsmay be tracked by step counting machine 634. The step threshold may beused to trigger the golf-event interrupt, because the condition mayindicate that the golfer has walked a sufficient distance to potentiallyexecute another golf shot, and the GPS sensor may be turned on to markthe GPS location of the golf shot.

In the above described examples of golf-event interrupts, GPS powermanagement machine 638 may be configured to dynamically increase thepower state duty cycle of the GPS sensor from the default power stateduty cycle responsive to the golf-event interrupt. In other words, theGPS power management machine 638 may deviate from the power state dutycycle to keep the GPS sensor turned on in order to provide a GPSposition for an impending golf event. In one example, score-keepingmachine 630 may be configured to recognize a golf shot grouping session,and GPS power management machine 638 may be configured to operate GPSsensor 604 in the higher power state until the golf shot groupingsession ends even if it means deviating from the default power stateduty cycle. In the above described examples, GPS power managementmachine 638 deviates from the default power state duty cycle to maintainGPS sensor 604 in the high power state. In some cases, GPS powermanagement machine 638 may deviate from the default power state dutycycle to maintain GPS sensor 604 in the lower power state.

In some cases, GPS sensor 604 may provide relatively inaccurate GPSposition data, although GPS sensor 604 may indicate that it has a signallock. Accordingly, in some implementations, GPS power management machine638 may be configured to selectively use machine-readable position data614 based on a level of stability of position data 614. In one example,GPS power management machine 638 evaluates an error value (e.g., anestimated horizontal positional error) of position data 614 to determinewhether position data 614 is stable/accurate. In particular, GPS powermanagement machine 638 may be configured to compare a rate of change ofthe error value to a threshold value from cycle to cycle. If the rate ofchange is less than the threshold value, GPS power management machine638 may determine that position data 614 is accurate, and GPS powermanagement machine 638 may allow position data 614 to be used bycomponents of wearable computing device 100. On the other hand, if therate of change of the error value is greater than the threshold value,then GPS power management machine 638 may prevent components of wearablecomputing device 100 from using position data 614 until position data614 is determined to be accurate.

FIG. 7 shows an example hierarchy of classifiers 624 included inmachine-learning golf shot detection machine 620. In the illustratedexample, the classifiers 624 are neural networks. In particular,machine-learning golf shot detection machine 620 includes a plurality ofdifferent swing detection classifiers and a plurality of differentcontact detection classifiers. Each swing detection classifier may beconfigured to identify a different type of golf swing.

Each contact detection classifier may be configured to identify whethera golf shot resulted from an identified golf swing having a swingmagnitude within a specified range. In this example hierarchy, theplurality of different swing detection classifiers may be executed inparallel to identify a golf swing. If any swing detection classifieridentifies a golf swing, then a contact classifier selector 700 ofmachine-learning golf shot detection machine 620 may determine amagnitude metric for the golf swing. Contact classifier selector 700uses the magnitude metric to select one of the contact detectionclassifiers to be executed to identify whether the golf swing is a golfshot. In one example, the magnitude metric is a greatest magnitude ofangular acceleration data samples windowed around a crossing of agyroscope. In particular, contact classifier selector 700 determineswhether an identified golf swing has a high swing magnitude, a mediumswing magnitude, or a low swing magnitude. The thresholds for the highswing magnitude, medium swing magnitude, and low swing magnitude may beset to any suitable thresholds. Although contact classifier selector 700selects a particular contact detection classifier based on a swingmagnitude metric in this example, contact classifier selector 700 mayselect a contact detection classifier based on any suitable sensorparameter of wearable computing device 100 without departing from thescope of the present disclosure. In another example, contact classifierselector 700 may select a contact classifier based on an audio signatureof an identified swing.

In the illustrated implementation, machine-learning golf shot detectionmachine 620 includes a drive swing detection classifier 622A, a chipswing detection classifier 622B, a putt swing detection classifier 622C,a pre-putt swing detection classifier 622D, a high-magnitude contactdetection classifier 622E, a medium-magnitude contact detectionclassifier 622F, and a low-magnitude contact detection classifier 622G.Each of these classifiers include features related to accelerometerand/or gyroscope data samples or discrete-time signals. Theaccelerometer data samples represent linear acceleration given in termsof Gs. The gyroscope data samples represent angular acceleration arounda particular axis given in degrees per second. FIG. 1 shows an exampleposition of the X, Y, and Z axes relative to wearable computing device100. Furthermore, an arrow corresponding to a direction of positiverotation of each gyroscope is shown on each of the X, Y, and Z axes.

Drive swing detection classifier 622A is previously trained withtraining motion data of previously-executed drive swings. Drive swingdetection classifier 622A is configured to identify a drive swing frommachine-readable motion data windowed around crossings between negativeand positive angular acceleration of each of two gyroscopes. In oneexample, features of drive swing detection classifier 622A are createdfrom machine-readable sensor data 610 within a fixed time window. In oneexample, the sensor data is sampled at an interval of 16 milliseconds toproduce 113 sensor data samples in a time window centered on a time atwhich the crossings of the two gyroscopes occur. In one example, thefeatures of drive swing detection classifier 622A include a differenceof accelerometer data samples along the Z axis within the time window; adifference of gyroscope data samples along the X axis within the timewindow; a difference of gyroscope data samples along the Y axis withinthe time window; a difference of gyroscope data samples along the Z axiswithin the time window, as well as raw acceleration data samplescorresponding to the Z axis and raw gyroscope data samples correspondingto the X, Y, and Z axes. As an example, the difference may be defined asy1[n]=x[n]−x[n-1], where x represents the particular data sample valueand n represents the discrete time at which the data sample is taken.Each of the above described data samples are down-sampled in time by 4.In response to drive swing detection classifier 622A identifying a driveswing, machine-learning golf shot detection machine 620 outputs anindication 702 of identifying a drive swing.

Chip swing detection classifier 622B is previously trained with trainingmotion data of previously-executed chip swings. Chip swing detectionclassifier 622B is configured to identify a chip swing frommachine-readable motion data windowed around crossings between negativeand positive angular acceleration of each of two gyroscopes. In oneexample, features of chip swing detection classifier 622B are createdfrom machine-readable sensor data 610 within a fixed time window. In oneexample, the sensor data is sampled at an interval of 16 milliseconds toproduce 113 sensor data samples in a time window centered on a time atwhich the crossings of the two gyroscopes occur. In one example, thefeatures of chip swing detection classifier 622B may be the same as thefeatures of drive swing detection classifier 622B. In response to chipswing detection classifier 622B identifying a chip swing,machine-learning golf shot detection machine 620 outputs an indication704 of identifying a chip swing.

Pre-putt swing detection classifier 622D has a low threshold foridentifying potential putt swings, and is executed prior to putt swingdetection classifier 622C in order to eliminate false detections ofputts. In other words, putt swing detection classifier 622C is notexecuted unless pre-putt swing detection classifier 622D identifies apotential putt. Pre-putt swing detection classifier 622D may besubstantially less complex than putt swing detection classifier 622C,and thus may reduce processing resources consumed to analyze whether aputt swing has occurred.

Pre-putt swing detection classifier 622D is configured to identify apotential putt swing from machine-readable motion data windowed aroundat least one crossing between negative and positive angular accelerationof at least one gyroscope. In one example, features of pre-putt swingdetection classifier 622D are created from machine-readable sensor data610 within a fixed time window. In one example, the sensor data issampled at an interval of 16 milliseconds to produce 53 sensor datasamples in a time window centered on a time at which the crossing of thegyroscope occurs. In one example, the features of pre-putt swingdetection classifier 622D include a sum of the absolute value of a firsthalf (left of center before the crossing occurs) of the gyroscope datasamples (one sum for each axis); a sum of the absolute value of a secondhalf (right of center after the crossing occurs) of the gyroscope datasamples (one sum for each axis); a variance of the second-orderdifference of the first half of the gyroscope data samples; a varianceof the second-order difference of the second half of the gyroscope datasamples; a mean of all accelerometer data samples in the time window(one value per axis); and a variance of all accelerometer data samplesin the time window (one value per axis). The second-order difference maybe defined asy2[n]=(f[n]−f[n-1])−(f[n-1]−f[n-2])=x[n]−2*f[n-1]+f[n-2]=y1[n]−y1[n-1],where the signal “f” represents any one axis of gyroscope oraccelerometer data, where x represents the particular data sample valueand n represents the discrete time at which the data sample is taken.

Putt swing detection classifier 622C is previously trained with trainingmotion data of previously-executed putt swings. Putt swing detectionclassifier 622C is configured to identify a putt swing frommachine-readable motion data windowed around at least one crossingbetween negative and positive angular acceleration of at least onegyroscope. In one example, features of putt swing detection classifier622C are created from machine-readable sensor data 610 within a fixedtime window. In one example, the sensor data is sampled at an intervalof 16 milliseconds to produce 105 sensor data samples in a time windowcentered on a time at which the crossing of the gyroscope occurs. In oneexample, the features of putt swing detection classifier 622C includeall of the features of pre-putt swing detection classifier 622D, as wellas raw accelerometer data samples along the X, Y, and Z axes—downsampled in time by 4 (separately for each signal); raw gyroscope datasamples along the X and Z axes—down sampled in time by 2 (separately foreach signal); raw gyroscope along the Y axis—not down sampled in time;the sign for gyroscope data samples along the X, Y, and Z axes—downsampled in time by 2 (separately for each signal); a sample-by-sampleBoolean comparison of gyroscope data samples along the X axis being lessthan gyroscope data samples along the Y axis—down sampled in time by 4(separately for each signal); a sample-by-sample Boolean comparison ofgyroscope data samples along the Z axis being less than gyroscope datasamples along the Y axis—down sampled in time by 4 (separately for eachsignal); a variance of data samples over the full time window for eachaxis of the accelerometers and the gyroscopes; a maximum of thegyroscope signals (e.g., pitch, roll, yaw) over the full time window;and a minimum of the gyroscope signals over the full time window. Inresponse to putt swing detection classifier 622C identifying a puttswing, machine-learning golf shot detection machine 620 outputs anindication 706 of identifying a putt swing.

High-magnitude contact detection classifier 622E is previously trainedwith training motion data of previously-executed high-magnitude swingsthat contact a golf ball as well as high-magnitude swings that do notcontact a golf ball. High-magnitude contact detection classifier 622E isconfigured to identify contact between a golf club held by the golferand a golf ball during a high-magnitude swing. High-magnitude contactdetection classifier 622E is configured to identify contact frommachine-readable motion data windowed around crossings between negativeand positive angular acceleration of each of two gyroscopes. In oneexample, features of high-magnitude contact detection classifier 622Eare created from machine-readable sensor data 610 within a fixed timewindow. In one example, the sensor data is sampled at an interval of 16milliseconds to produce 40 sensor data samples in a time windowextending right of center on a time at which the crossings of the twogyroscopes occur. The time window corresponds to the forward swingmotion of the golfer during the swing. In one example, the features ofhigh-magnitude contact detection classifier 622E include a maximum 4values for each accelerometer signal (e.g., X, Y, Z) of the absolutevalue of the difference of data samples in the time window; a maximum 3values for each accelerometer signal of the absolute value of thesecond-order difference of data samples in the time window; a maximum 3values for each gyroscope signal (e.g., pitch, roll, yaw) of theabsolute value of the difference of data samples in the time window; amaximum absolute value for each gyroscope signal; and a maximum absolutevalue for each accelerometer signal. In some implementations,high-magnitude contact detection classifier 622E may be configured toidentify contact from machine-readable audio data windowed aroundcrossings between negative and positive angular acceleration of each oftwo gyroscopes. For example, high-magnitude contact detection classifier622E may include features based on an audio signature of a golf swing orcontact between a golf club and a golf ball. In response tohigh-magnitude contact detection classifier 622E identifying ahigh-magnitude shot, machine-learning golf shot detection machine 620outputs an indication 708 of identifying a high-magnitude shot.

Medium-magnitude contact detection classifier 622F is previously trainedwith training motion data of previously-executed medium-magnitude swingsthat contact a golf ball as well as medium-magnitude swing that do notcontact a golf ball. Medium-magnitude contact detection classifier 622Fis configured to identify contact between a golf club held by the golferand a golf ball during a medium-magnitude swing. Medium-magnitudecontact detection classifier 622F is configured to identify contact frommachine-readable motion data windowed around crossings between negativeand positive angular acceleration of each of two gyroscopes. In oneexample, features of medium-magnitude contact detection classifier 622Fare created from machine-readable sensor data 610 within a fixed timewindow. In one example, the sensor data is sampled at an interval of 16milliseconds to produce 40 sensor data samples in a time windowextending right of center on a time at which the crossings of the twogyroscopes occur. The time window corresponds to the forward swingmotion of the golfer during the swing. In one example, the features ofmedium-magnitude contact detection classifier 622F include a maximum 4values for each accelerometer signal (e.g., X, Y, Z) of the absolutevalue of the difference of data samples in the time window; a maximum 3values for each gyroscope signal (e.g., pitch, roll, yaw) of theabsolute value of the difference of data samples in the time window; anda maximum absolute value for each gyroscope signal. In someimplementations, medium-magnitude contact detection classifier 622F maybe configured to identify contact from machine-readable audio datawindowed around crossings between negative and positive angularacceleration of each of two gyroscopes. For example, medium-magnitudecontact detection classifier 622F may include features based on an audiosignature of a golf swing or contact between a golf club and a golfball. In response to medium-magnitude contact detection classifier 622Fidentifying a medium-magnitude shot, machine-learning golf shotdetection machine 620 outputs an indication 710 of identifying amedium-magnitude golf shot.

Low-magnitude contact detection classifier 622G is previously trainedwith training motion data of previously-executed low-magnitude swingsthat contact a golf ball as well as low-magnitude swings that do notcontact a golf ball. Low-magnitude contact detection classifier 622G isconfigured to identify contact between a golf club held by the golferand a golf ball during a low-magnitude swing (or another type of swingbased on selection by contact classifier selector 700). Low-magnitudecontact detection classifier 622G is configured to identify contact frommachine-readable motion data windowed around at least one crossingbetween negative and positive angular acceleration of at least onegyroscope. In one example, features of low-magnitude contact detectionclassifier 622G are created from machine-readable sensor data 610 withina fixed time window. In one example, the sensor data is sampled at aninterval of 16 milliseconds to produce 35 sensor data samples in a timewindow extending right of center on a time at which the crossings of thegyroscope occurs. The time window corresponds to the forward swingmotion of the golfer during the swing. In one example, the features oflow-magnitude contact detection classifier 622G include a maximum of theabsolute value of the difference of data samples in the time window foreach accelerometer signal (e.g., X, Y, Z); and a maximum of the absolutevalue of the difference of data samples in the time window for eachaccelerometer signal divided by a maximum absolute value of allgyroscope signals. In some implementations, low-magnitude contactdetection classifier 622G may be configured to identify contact frommachine-readable audio data windowed around crossings between negativeand positive angular acceleration of each of two gyroscopes. Forexample, low-magnitude contact detection classifier 622G may includefeatures based on an audio signature of a golf swing or contact betweena golf club and a golf ball. In response to low-magnitude contactdetection classifier 622G identifying a low-magnitude shot,machine-learning golf shot detection machine 620 outputs an indication712 of identifying a low-magnitude golf shot.

Although machine-learning golf shot detection machine 620 is describedas including classifiers in the form of neural networks,machine-learning golf shot detection machine 620 may employ any suitablemachine-learning approach, such as convolutional neural networks, deepneural networks, boosted decision trees, bootstrap aggregating, bagging,and other machine-learning approaches. Moreover, in someimplementations, golf shot detection machine 620 may be configured toidentify golf swings and golf shots without employing machine learning.In some implementations, the golf shot detection machine may beimplemented as one or more circuits.

FIG. 8 shows an example method 800 for automatically keeping track of agolf score of a golfer wearing a wearable computing device. For example,the method 800 may be performed by wearable computing device 100 shownin FIG. 1 or computing system 1000 shown in FIG. 10.

At 802, method 800 includes translating, via one or more motion sensorsof the wearable computing device, swing motion of the golfer tomachine-readable motion data. In one example, the one or more motionsensors include one or more accelerometers and one or more gyroscopes.

In some implementations, at 804, method 800 optionally may includetranslating, via one or more audio sensors of the wearable computingdevice, sound of swing motion of the golfer to machine-readable audiodata.

In some implementations, at 806, method 800 optionally may includedetermining an orientation of the wearable computing device relative tothe golfer based on the machine-readable motion data. In one example,orientation detection machine 628 (shown in FIG. 6) determines theorientation of the wearable computing device. The orientation may bedetermined automatically by orientation detection machine 628 ormanually via user input to the wearable computing device.

In implementations where the orientation of the wearable computingdevice is determined, at 808, method 800 optionally may includemathematically transforming machine-readable motion data based on thedetermined orientation. In one example, orientation detection machine628 (shown in FIG. 6) transforms the motion data. The motion data may betransformed in this manner so that the motion data appears the same tomachine-learning golf shot detection machine 620 (shown in FIG. 6)regardless of the orientation of the wearable computing device.

At 810, method 800 includes identifying a golf shot in which a golf clubheld by the golfer contacts a golf ball from the machine-readable motiondata using a machine-learning golf shot detection machine 620. Inimplementations where machine-readable audio data is provided by the oneor more audio sensors, method 800 may include identifying a golf shot inwhich a golf club held by the golfer contacts a golf ball from themachine-readable audio data using the machine-learning golf shotdetection machine 620. In some implementations, the golf shot may beidentified from the machine-readable motion data and themachine-readable audio data using the machine-learning golf shotdetection machine 620.

In some implementations, at 812, method 800 optionally may includerecognizing a golf shot grouping session. In one example, the golf shotgrouping session is recognized by score-keeping machine 630 (shown inFIG. 6).

At 814, method 800 includes incrementing a golf score of the golferresponsive to the machine-learning golf shot detection machineidentifying the golf shot. In implementations where the golf shotgrouping session is recognized, at 816, the method optionally mayinclude incrementing the golf score only once for each golf shotgrouping session.

In implementations where the golf shot grouping session is recognized,at 818, method 800 optionally may include ending the golf shot groupingsession responsive to a designated condition. In one example, the golfshot grouping session is ended by score-keeping machine 630 (shown inFIG. 6).

FIG. 9 shows an example method 900 for controlling operation of a GPSsensor of a golf assistant computing device. For example, the method 900may be performed by wearable computing device 100 shown in FIG. 1 orcomputing system 1000 shown in FIG. 10.

In some implementations, at 902, method 900 optionally may include, inresponse to execution of a golf application program on the golfassistant computing device, operating the GPS sensor in a high powerstate until the GPS sensor acquires a GPS signal.

At 904, method 900 includes operating the GPS sensor according to adefault power state duty cycle. The default power state duty cycledefines a percentage of a period in which the GPS sensor operates in thehigh power state relative to the lower power state. In one example, thedefault power state duty cycle is 33% over a period of 24 seconds.However, the default power state duty cycle may be set to any suitablepercentage over any suitable period. In one example, GPS powermanagement machine 638 shown in FIG. 6 controls the GPS sensor accordingto the default power state duty cycle.

In implementations, where the GPS sensor is operated in the high powerstate until the GPS sensor acquires a GPS signal, at 906, method 900optionally may include, in response to the GPS sensor acquiring the GPSsignal, controlling operation of the GPS sensor according to the defaultpower state duty cycle.

In some implementations, at 908, method 900 optionally may includetranslating, via one or more motion sensors of the golf assistantcomputing device, step motion of a golfer to machine-readable motiondata.

In some implementations, at 910, method 900 optionally may includeidentifying a golf swing of the golfer from the machine-readable motiondata using a golf shot detection machine. In one examplemachine-learning golf shot detection machine 620 shown in FIG. 6identifies the golf swing.

In some implementations, at 912, method 900 optionally may includetranslating, via one or more motion sensors of the golf assistantcomputing device, step motion of a golfer to machine-readable motiondata.

In some implementations, at 914, method 900 optionally may includedetermine a number of steps taken by the golfer from themachine-readable motion data. In one example, step counting machine 634shown in FIG. 6 determines the number of steps.

At 916, method 900 includes dynamically adjusting the power state dutycycle of the GPS sensor from the default power state duty cycleresponsive to a golf-event interrupt. In one example, GPS powermanagement machine 638 shown in FIG. 6 controls the GPS sensor todynamically adjusts the power state duty cycle. The power state dutycycle may be adjusted responsive to any suitable golf-event interrupt.In some implementations, at 918, the golf-event interrupt is generatedresponsive to manual user input. In some implementations, at 920, thegolf-event interrupt is generated responsive to a device-initiatedrequest for a distance. In some implementations, at 922, the golf-eventinterrupt is generated responsive to the golf detection machineidentifying the golf swing. In some implementations, at 924, thegolf-event interrupt is generated responsive to a number of steps takenby the golfer after the last golf shot being greater than a stepthreshold.

In some implementations, the methods and processes described herein maybe tied to a computing system of one or more computing devices. Inparticular, such methods and processes may be implemented as acomputer-application program or service, an application-programminginterface (API), a library, and/or other computer-program product.

FIG. 10 schematically shows a non-limiting implementation of a computingsystem 1000 that can enact one or more of the methods and processesdescribed above. Computing system 1000 is shown in simplified form.Computing system 1000 may take the form of one or more personalcomputers, server computers, tablet computers, home-entertainmentcomputers, network computing devices, gaming devices, mobile computingdevices, mobile communication devices (e.g., smart phone), and/or othercomputing devices. Computing system 1000 may represent wearablecomputing device 100 shown in FIG. 1.

Computing system 1000 includes a logic machine 1002 and a storagemachine 1004. Computing system 1000 optionally may include a displaysubsystem 1006, input subsystem 1008, communication subsystem 1010,and/or other components not shown in FIG. 10.

Logic machine 1002 includes one or more physical devices configured toexecute instructions. For example, logic machine 1002 may be configuredto execute instructions that are part of one or more applications,services, programs, routines, libraries, objects, components, datastructures, or other logical constructs. Such instructions may beimplemented to perform a task, implement a data type, transform thestate of one or more components, achieve a technical effect, orotherwise arrive at a desired result.

The logic machine 1002 may include one or more processors configured toexecute software instructions. Additionally or alternatively, logicmachine 1002 may include one or more hardware or firmware logic machinesconfigured to execute hardware or firmware instructions. Processors oflogic machine 1002 may be single-core or multi-core, and theinstructions executed thereon may be configured for sequential,parallel, and/or distributed processing. Individual components of logicmachine 1002 optionally may be distributed among two or more separatedevices, which may be remotely located and/or configured for coordinatedprocessing. Aspects of logic machine 1002 may be virtualized andexecuted by remotely accessible, networked computing devices configuredin a cloud-computing configuration.

Storage machine 1004 includes one or more physical devices configured tohold instructions executable by logic machine to implement the methodsand processes described herein. When such methods and processes areimplemented, the state of storage machine 1004 may be transformed—e.g.,to hold different data.

Storage machine 1004 may include removable and/or built-in devices.Storage machine 1004 may include optical memory (e.g., CD, DVD, HD-DVD,and Blu-Ray Disc), semiconductor memory (e.g., RAM, EPROM, and EEPROM),and/or magnetic memory (e.g., hard-disk drive, floppy-disk drive, tapedrive, and MRAM), among others. Storage machine 1004 may includevolatile, nonvolatile, dynamic, static, read/write, read-only,random-access, sequential-access, location-addressable,file-addressable, and/or content-addressable devices.

It will be appreciated that storage machine 1004 includes one or morephysical devices. However, aspects of the instructions described hereinalternatively may be propagated by a communication medium (e.g., anelectromagnetic signal and an optical signal) that is not held by aphysical device for a finite duration.

Aspects of logic machine 1002 and storage machine 1004 may be integratedtogether into one or more hardware-logic components. Such hardware-logiccomponents may include field-programmable gate arrays (FPGAs), program-and application-specific integrated circuits (PASIC/ASICs), program- andapplication-specific standard products (PSSP/ASSPs), system-on-a-chip(SOC), and complex programmable logic devices (CPLDs), for example.

When included, machine-learning golf shot detection machine 620,crossing detection machine 626, orientation detection machine 628,score-keeping machine 630, distance calculation machine 632, stepcounting machine 634, hole progression machine 636, and GPS powermanagement machine 638 may be implemented as the same or different logicmachines as described above. In some implementations, one or more of themachines may be implemented as one or more circuits.

It will be appreciated that a “service”, as used herein, is anapplication program executable across multiple user sessions. A servicemay be available to one or more system components, programs, and/orother services. In some implementations, a service may run on one ormore server-computing devices.

When included, display subsystem 1006 may be used to present a visualrepresentation of data held by storage machine 1004. This visualrepresentation may take the form of a graphical user interface (GUI). Asthe herein described methods and processes change the data held by thestorage machine 1004, and thus transform the state of the storagemachine 1004, the state of display subsystem 1006 may likewise betransformed to visually represent changes in the underlying data.Display subsystem 1006 may include one or more display devices utilizingvirtually any type of technology. Such display devices may be combinedwith logic machine 1002 and/or storage machine 1004 in a sharedenclosure, or such display devices may be peripheral display devices.

When included, input subsystem 1008 may comprise or interface with oneor more user-input devices such as a keyboard, mouse, touch screen, orgame controller. In some implementations, input subsystem 1008 maycomprise or interface with selected natural user input (NUI)componentry. Such componentry may be integrated or peripheral, and thetransduction and/or processing of input actions may be handled on- oroff-board. Example NUI componentry may include a microphone for speechand/or voice recognition; an infrared, color, stereoscopic, and/or depthcamera for machine vision and/or gesture recognition; a head tracker,eye tracker, accelerometer, and/or gyroscope for motion detection and/orintent recognition; as well as electric-field sensing componentry forassessing brain activity.

When included, communication subsystem 1010 may be configured tocommunicatively couple computing system 1000 with one or more othercomputing devices. Communication subsystem 1010 may include wired and/orwireless communication devices compatible with one or more differentcommunication protocols. As non-limiting examples, communicationsubsystem 1010 may be configured for communication via a wirelesstelephone network, or a wired or wireless local- or wide-area network.In some embodiments, the communication subsystem may allow computingsystem 1000 to send and/or receive messages to and/or from other devicesvia a network such as the Internet.

Additional aspects of the present disclosure are described below.According to one aspect, a device, comprises a global positioning system(GPS) sensor switchable between a high power state and a lower powerstate and a circuit configured to dynamically adjust a power state dutycycle of the GPS sensor based on at least a golf-event interrupt. Thepower state duty cycle defining a percentage of a period in which theGPS sensor operates in the high power state relative to the lower powerstate. In this aspect, the circuit may be configured to dynamicallyincrease the power state duty cycle of the GPS sensor from a defaultpower state duty cycle based on at least the golf-event interrupt. Inthis aspect, the circuit may be configured to, in response to executionof a golf application program on the device, operate the GPS sensor inthe high power state until the GPS sensor acquires a GPS signal, and inresponse to the GPS sensor acquiring the GPS signal, control operationof the GPS sensor according to the default power state duty cycle. Inthis aspect, the golf-event interrupt may be generated responsive to amanual user input to the device. In this aspect, the manual user inputmay be a request for a distance between a current position of a golferand a designated golf course feature. In this aspect, the golf-eventinterrupt may be generated responsive to a device-initiated request fora distance from a current position of a golfer and a designated golfcourse feature. In this aspect, the circuit may be a first circuit, andthe device may further comprise one or more motion sensors configured tomeasure swing motion and a second circuit in communication with the oneor more motion sensors. The second circuit may be configured totranslate measurements of swing motion to machine-readable motion dataand identify from the machine-readable motion data a golf swing of agolfer. The golf-event interrupt may be generated responsive to thesecond circuit identifying the golf swing. In this aspect, the secondcircuit may be configured to recognize a golf shot grouping session. Thefirst circuit may be configured to operate the GPS sensor in the higherpower state until the golf shot grouping session ends. In this aspect,the circuit may be a first circuit, and the device may further compriseone or more motion sensors configured to measure step motion and asecond circuit in communication with the one or more motion sensors. Thesecond circuit may be configured to translate measurements of stepmotion to machine-readable motion data, and determine a number of stepstaken by a golfer from the machine-readable motion data. The golf-eventinterrupt may be generated responsive to a number of steps taken by thegolfer after a last golf shot being greater than a step threshold. Inthis aspect, the circuit may be configured to set the period of thepower state duty cycle such that the GPS sensor may be operated in thehigh power state at a frequency to maintain location information in aninternal memory of the GPS sensor.

According to another aspect, a method comprises operating a globalpositioning system (GPS) sensor according to a default power state dutycycle and dynamically increasing the power state duty cycle of the GPSsensor from the default power state duty cycle based on at least agolf-event interrupt. The default power state duty cycle defines apercentage of a period in which the GPS sensor operates in a high powerstate relative to a lower power state. In this aspect, the method mayfurther comprise, in response to execution of a golf application programon a device that utilizes machine-readable location data provided by theGPS sensor, operating the GPS sensor in the high power state until theGPS sensor acquires a GPS signal, and in response to the GPS sensoracquiring the GPS signal, controlling operation of the GPS sensoraccording to the default power state duty cycle. In this aspect, thegolf-event interrupt may be generated responsive to a manual user inputto a device that utilizes machine-readable location data provided by theGPS sensor. In this aspect, the manual user input may be a request for adistance between a current position of a golfer and a designated golfcourse feature. In this aspect, the golf-event interrupt may begenerated responsive to a device-initiated request for a distance from acurrent position of a golfer and a designated golf course feature. Inthis aspect, the method may further comprise translating, via one ormore motion sensors, swing motion to machine-readable motion data, andidentifying a golf swing from the machine-readable motion data. Thegolf-event interrupt may be generated responsive to the golf swing beingidentified. In this aspect, the method may further comprise translating,via one or more motion sensors, step motion to machine-readable motiondata, and determine a number of steps taken from the machine-readablemotion data. The golf-event interrupt may be generated responsive to anumber of steps taken after a last golf shot being greater than a stepthreshold.

According to another aspect a computing device, comprises one or moremotion sensors configured to measure swing motion, a global positioningsystem (GPS) sensor switchable between a high power state and a lowerpower state, a first circuit, and a second circuit. The first circuitmay be in communication with the one or more motion sensors. The firstcircuit may be configured to translate measurements of swing motion tomachine-readable motion data and identify a golf swing of the golferfrom the machine-readable motion data. The second circuit may beconfigured to dynamically adjust a power state duty cycle of the GPSsensor responsive to the golf swing being identified, the power stateduty cycle defining a percentage of a period in which the GPS sensoroperates in the high power state relative to the lower power state. Inthis aspect, the first circuit and the second circuit may be implementedon a same integrated circuit. In this aspect, the second circuit may beconfigured to dynamically adjust the power state duty cycle of the GPSsensor responsive to a device-initiated request or manual user input tothe device.

It will be understood that the configurations and/or approachesdescribed herein are exemplary in nature, and that these specificembodiments or examples are not to be considered in a limiting sense,because numerous variations are possible. The specific routines ormethods described herein may represent one or more of any number ofprocessing strategies. As such, various acts illustrated and/ordescribed may be performed in the sequence illustrated and/or described,in other sequences, in parallel, or omitted. Likewise, the order of theabove-described processes may be changed.

The subject matter of the present disclosure includes all novel andnonobvious combinations and subcombinations of the various processes,systems and configurations, and other features, functions, acts, and/orproperties disclosed herein, as well as any and all equivalents thereof.

1. A device, comprising: a global positioning system (GPS) sensorswitchable between a high power state and a lower power state; and acircuit configured to dynamically adjust a power state duty cycle of theGPS sensor based on at least a golf-event interrupt, the power stateduty cycle defining a percentage of a period in which the GPS sensoroperates in the high power state relative to the lower power state. 2.The device of claim 1, wherein the circuit is configured to dynamicallyincrease the power state duty cycle of the GPS sensor from a defaultpower state duty cycle based on at least the golf-event interrupt. 3.The device of claim 2, wherein the circuit is configured to, in responseto execution of a golf application program on the device, operate theGPS sensor in the high power state until the GPS sensor acquires a GPSsignal, and in response to the GPS sensor acquiring the GPS signal,control operation of the GPS sensor according to the default power stateduty cycle.
 4. The device of claim 1, wherein the golf-event interruptis generated responsive to a manual user input to the device.
 5. Thedevice of claim 4, wherein the manual user input is a request for adistance between a current position of a golfer and a designated golfcourse feature.
 6. The device of claim 1, wherein the golf-eventinterrupt is generated responsive to a device-initiated request for adistance from a current position of a golfer and a designated golfcourse feature.
 7. The device of claim 1, wherein the circuit is a firstcircuit, and wherein the device further comprises: one or more motionsensors configured to measure swing motion; a second circuit incommunication with the one or more motion sensors, the second circuitbeing configured to translate measurements of swing motion tomachine-readable motion data and identify from the machine-readablemotion data a golf swing of a golfer, and wherein the golf-eventinterrupt is generated responsive to the second circuit identifying thegolf swing.
 8. The device of claim 7, wherein the second circuit isconfigured to recognize a golf shot grouping session, and wherein thefirst circuit is configured to operate the GPS sensor in the higherpower state until the golf shot grouping session ends.
 9. The device ofclaim 1, wherein the circuit is a first circuit, and wherein the devicefurther comprises: one or more motion sensors configured to measure stepmotion; and a second circuit in communication with the one or moremotion sensors, the second circuit being configured to translatemeasurements of step motion to machine-readable motion data, anddetermine a number of steps taken by a golfer from the machine-readablemotion data, and wherein the golf-event interrupt is generatedresponsive to a number of steps taken by the golfer after a last golfshot being greater than a step threshold.
 10. The device of claim 1,wherein the circuit is configured to set the period of the power stateduty cycle such that the GPS sensor is operated in the high power stateat a frequency to maintain location information in an internal memory ofthe GPS sensor.
 11. A method comprising: operating a global positioningsystem (GPS) sensor according to a default power state duty cycle, thedefault power state duty cycle defining a percentage of a period inwhich the GPS sensor operates in a high power state relative to a lowerpower state; and dynamically increasing the power state duty cycle ofthe GPS sensor from the default power state duty cycle based on at leasta golf-event interrupt.
 12. The method of claim 11, further comprising:in response to execution of a golf application program on a device thatutilizes machine-readable location data provided by the GPS sensor,operating the GPS sensor in the high power state until the GPS sensoracquires a GPS signal; and in response to the GPS sensor acquiring theGPS signal, controlling operation of the GPS sensor according to thedefault power state duty cycle.
 13. The method of claim 11, wherein thegolf-event interrupt is generated responsive to a manual user input to adevice that utilizes machine-readable location data provided by the GPSsensor.
 14. The method of claim 13, wherein the manual user input is arequest for a distance between a current position of a golfer and adesignated golf course feature.
 15. The method of claim 11, wherein thegolf-event interrupt is generated responsive to a device-initiatedrequest for a distance from a current position of a golfer and adesignated golf course feature.
 16. The method of claim 11, furthercomprising: translating, via one or more motion sensors, swing motion tomachine-readable motion data; and identifying a golf swing from themachine-readable motion data, and wherein the golf-event interrupt isgenerated responsive to the golf swing being identified.
 17. The methodof claim 11, further comprising: translating, via one or more motionsensors, step motion to machine-readable motion data; and determine anumber of steps taken from the machine-readable motion data, and whereinthe golf-event interrupt is generated responsive to a number of stepstaken after a last golf shot being greater than a step threshold.
 18. Acomputing device, comprising: one or more motion sensors configured tomeasure swing motion; a first circuit in communication with the one ormore motion sensors, the first circuit being configured to translatemeasurements of swing motion to machine-readable motion data andidentify a golf swing of the golfer from the machine-readable motiondata; a global positioning system (GPS) sensor switchable between a highpower state and a lower power state; and a second circuit configured todynamically adjust a power state duty cycle of the GPS sensor responsiveto the golf swing being identified, the power state duty cycle defininga percentage of a period in which the GPS sensor operates in the highpower state relative to the lower power state.
 19. The device of claim18, wherein the first circuit and the second circuit are implemented ona same integrated circuit.
 20. The device of claim 18, wherein thesecond circuit is configured to dynamically adjust the power state dutycycle of the GPS sensor responsive to a device-initiated request ormanual user input to the device.